Instead, rely on GTK_IS_ROOT().
Also implement GtkRoot on GtkWindow and GtkInvisible, the two widgets
that used to set the toplevel flag before.
*/
#include "config.h"
-#include <gdk/gdk.h>
+
#include "gtkinvisibleprivate.h"
-#include "gtkwidgetprivate.h"
-#include "gtkprivate.h"
+
#include "gtkintl.h"
+#include "gtkprivate.h"
+#include "gtkroot.h"
+#include "gtkwidgetprivate.h"
/**
GParamSpec *pspec);
static void gtk_invisible_constructed (GObject *object);
-G_DEFINE_TYPE_WITH_PRIVATE (GtkInvisible, gtk_invisible, GTK_TYPE_WIDGET)
+static void
+gtk_invisible_root_interface_init (GtkRootInterface *iface)
+{
+}
+
+G_DEFINE_TYPE_WITH_CODE (GtkInvisible, gtk_invisible, GTK_TYPE_WIDGET,
+ G_ADD_PRIVATE (GtkInvisible)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_ROOT,
+ gtk_invisible_root_interface_init))
static void
gtk_invisible_class_init (GtkInvisibleClass *class)
priv = invisible->priv;
gtk_widget_set_has_surface (GTK_WIDGET (invisible), TRUE);
- _gtk_widget_set_is_toplevel (GTK_WIDGET (invisible), TRUE);
g_object_ref_sink (invisible);
SetWindowLongPtrW (wnd, GWLP_USERDATA, (LONG_PTR)op);
- _gtk_widget_set_is_toplevel (plug, TRUE);
-
gtk_window_set_modal (GTK_WINDOW (plug), TRUE);
op_win32->embed_widget = plug;
gtk_container_add (GTK_CONTAINER (plug), op->priv->custom_widget);
gboolean
gtk_widget_is_toplevel (GtkWidget *widget)
{
- GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-
g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
- return priv->toplevel;
-}
-
-void
-_gtk_widget_set_is_toplevel (GtkWidget *widget,
- gboolean is_toplevel)
-{
- GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-
- priv->toplevel = is_toplevel;
+ return GTK_IS_ROOT (widget);
}
/**
g_warning ("%s %p is mapped but not visible",
G_OBJECT_TYPE_NAME (widget), widget);
- if (!priv->toplevel)
+ if (!GTK_IS_ROOT (widget))
{
if (!priv->child_visible)
g_warning ("%s %p is mapped but not child_visible",
G_OBJECT_TYPE_NAME (widget), widget);
#endif
}
- else if (!priv->toplevel)
+ else if (!GTK_IS_ROOT (widget))
{
/* No parent or parent not realized on non-toplevel implies... */
G_OBJECT_TYPE_NAME (parent), parent,
G_OBJECT_TYPE_NAME (widget), widget);
}
- else if (!widget->priv->toplevel)
+ else if (!GTK_IS_ROOT (widget))
{
/* No parent or parent not mapped on non-toplevel implies... */
#include "gtkcsstypesprivate.h"
#include "gtkeventcontroller.h"
#include "gtklistlistmodelprivate.h"
+#include "gtkroot.h"
#include "gtksizerequestcacheprivate.h"
#include "gtkwindowprivate.h"
#include "gtkinvisibleprivate.h"
#endif
guint in_destruction : 1;
- guint toplevel : 1;
guint anchored : 1;
guint no_surface : 1;
guint no_surface_set : 1;
gboolean has_default);
void _gtk_widget_set_has_grab (GtkWidget *widget,
gboolean has_grab);
-void _gtk_widget_set_is_toplevel (GtkWidget *widget,
- gboolean is_toplevel);
void _gtk_widget_grab_notify (GtkWidget *widget,
gboolean was_grabbed);
static inline gboolean
_gtk_widget_is_toplevel (GtkWidget *widget)
{
- return widget->priv->toplevel;
+ return GTK_IS_ROOT (widget);
}
static inline GtkStateFlags
#include "gtkpointerfocusprivate.h"
#include "gtkpopoverprivate.h"
#include "gtkprivate.h"
+#include "gtkroot.h"
#include "gtkseparatormenuitem.h"
#include "gtksettings.h"
#include "gtksnapshot.h"
const gchar *tagname,
gpointer user_data);
+/* GtkRoot */
+static void gtk_window_root_interface_init (GtkRootInterface *iface);
+
static void ensure_state_flag_backdrop (GtkWidget *widget);
static void unset_titlebar (GtkWindow *window);
static void on_titlebar_title_notify (GtkHeaderBar *titlebar,
G_DEFINE_TYPE_WITH_CODE (GtkWindow, gtk_window, GTK_TYPE_BIN,
G_ADD_PRIVATE (GtkWindow)
G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
- gtk_window_buildable_interface_init))
+ gtk_window_buildable_interface_init)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_ROOT,
+ gtk_window_root_interface_init))
static void
add_tab_bindings (GtkBindingSet *binding_set,
widget = GTK_WIDGET (window);
gtk_widget_set_has_surface (widget, TRUE);
- _gtk_widget_set_is_toplevel (widget, TRUE);
_gtk_widget_set_anchored (widget, TRUE);
priv->title = NULL;
}
}
+static void
+gtk_window_root_interface_init (GtkRootInterface *iface)
+{
+}
+
/**
* gtk_window_new:
* @type: type of window